#ifndef	__ASCIIENCODING_H__
#define	__ASCIIENCODING_H__

namespace BFX
{

// REFASCIIEncoding
//
// Note that REFASCIIEncoding is optomized with no best fit and ? for fallback. 
// It doesn't come in other flavors.
// 
// Note: REFASCIIEncoding is the only encoding that doesn't do best fit (windows has best fit). 
//
// Note: IsAlwaysNormalized remains false because 1/2 the code points are unassigned, so they'd 
//       use fallbacks, and we cannot guarantee that fallbacks are normalized.
//
class REFASCIIEncoding : public REFEncoding
{
public:
	REFASCIIEncoding();
	virtual ~REFASCIIEncoding();

	//
	// Overrides
	//
	virtual int GetMaxByteCount(int nCharCount) const;
	virtual int GetMaxCharCount(int nByteCount) const;
	virtual int GetByteCount(const UCHAR* pChars, int nCount) const;
	virtual int GetBytes(const UCHAR* pChars, int nCharCount, OUT BYTE* pBytes, int nByteCount) const;
	virtual int GetCharCount(const BYTE* pBytes, int nCount, REFDecoder* pDecoder) const;
	virtual int GetChars(const BYTE* pBytes, int nByteCount, OUT UCHAR* pChars, int nCharCount, REFDecoder* pDecoder) const;

};

}	//	namespace BFX

#endif	//	__ASCIIENCODING_H__
